Package de.yaams.maker.helper.wizard.core

Source Code of de.yaams.maker.helper.wizard.core.WizardFrame$ImgComp

/**
*
*/
package de.yaams.maker.helper.wizard.core;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JSeparator;

import de.yaams.maker.helper.gui.AE;
import de.yaams.maker.helper.gui.YFactory;
import de.yaams.maker.helper.gui.YHeader;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.language.T;
import de.yaams.maker.programm.YaFrame;

/**
* @author Praktikant
*
*/
public class WizardFrame extends JDialog {

  private static final long serialVersionUID = 5851875404052666947L;
  protected ArrayList<WizardBasePage> pages;
  protected int actPage;

  protected JPanel main, buttons, panel;
  protected ImgComp img;
  protected JButton back, next;
  protected YHeader header;
  protected transient AE ae;
  protected FormBuilder form;

  /**
   *
   */
  public WizardFrame(ArrayList<WizardBasePage> pages, AE ae) {
    super(YaFrame.get(), "");
    this.pages = pages;
    this.ae = ae;

    buildMainGui();
    buildGui(0);
    setPreferredSize(new Dimension(550, 500));

    pack();
    setLocationRelativeTo(null);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setVisible(true);
  }

  /**
   * Build the main menu
   */
  public void buildMainGui() {
    setLayout(new BorderLayout());

    // add img
    img = new ImgComp();
    add(img, BorderLayout.WEST);

    // build header
    header = new YHeader("", "yaams");

    // load layout
    panel = new JPanel(new GridLayout(1, 1));

    // add main
    main = new JPanel(new BorderLayout());
    main.add(header, BorderLayout.NORTH);
    main.add(panel, BorderLayout.CENTER);
    main.add(new JSeparator(), BorderLayout.SOUTH);
    add(main, BorderLayout.CENTER);

    // build buttons
    buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 5));
    back = YFactory.b(T.r("wizard.back"), null, new AE() {

      @Override
      public void run() {
        // can switch?
        buildGui(actPage - 1);
      }
    });
    buttons.add(back);

    next = YFactory.b("", null, new AE() {

      @Override
      public void run() {
        buildGui(actPage + 1);
      }
    });
    buttons.add(next);

    add(buttons, BorderLayout.SOUTH);
  }

  /**
   * Build the menu for the act tab
   */
  public void buildGui(int newID) {
    // can switch?
    if (form != null && !form.isValidate()) {
      return;
    }
    if (form != null) {
      form.informListeners();
    }
    actPage = newID;

    // last?
    if (actPage == pages.size()) {
      finish();
      return;
    }

    WizardBasePage p = pages.get(actPage);

    // set basics
    img.setImg(p.getImage());
    header.setText(p.getTitle(), p.getIcon());
    form = p.getForm();
    form.setShowSaveButton(false);
    panel.removeAll();
    panel.add(form.getPanel(false));
    getRootPane().revalidate();
    setTitle(p.getTitle());

    // set buttons
    back.setEnabled(actPage > 0);
    next.setText(T.r(actPage == pages.size() - 1 ? "wizard.finish" : "wizard.next"));
  }

  /**
   * If the wizard exit, use the setting and finish all pages.
   */
  public void finish() {

    // clear it
    pages.clear();
    setVisible(false);
    dispose();
    ae.actionPerformed(null);
  }

  class ImgComp extends JComponent {

    private static final long serialVersionUID = -3294897747945329105L;
    protected BufferedImage img;

    /**
     * Create a new
     */
    public ImgComp() {
      super();
      setPreferredSize(new Dimension(164, 360));
      setBackground(new Color(6, 32, 83));
    }

    @Override
    public void paintComponent(Graphics g) {
      g.fillRect(0, 0, 300, 1000);

      // img
      if (img != null) {
        g.drawImage(img, 0, 0, null);
      }

      // navi
      g.setColor(Color.white);
      for (int i = 0, l = pages.size(); i < l; i++) {
        g.drawString((actPage == i ? "> " : "") + pages.get(i).getTitle(), 20, 30 + i * 12);

      }
    }

    /**
     * @param img
     *            the img to set
     */
    public void setImg(BufferedImage img) {
      this.img = img;
      repaint();
      invalidate();
    }
  }
}
TOP

Related Classes of de.yaams.maker.helper.wizard.core.WizardFrame$ImgComp

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.